/**
*FileContentManager is a Java based file manager desktop application, 
*it can show, edit and manipulate the content of the files archived inside a zip.
*
*Copyright (C) 2007 
*
*Created by Camila Sanchez [http://mimix.wordpress.com/], Rafael Naufal [http://rnaufal.livejournal.com] and Rodrigo [rdomartins@gmail.com]
*
*FileContentManager is free software; you can redistribute it and/or
*modify it under the terms of the GNU Lesser General Public
*License as published by the Free Software Foundation; either
*version 2.1 of the License, or (at your option) any later version.
*
*This library is distributed in the hope that it will be useful,
*but WITHOUT ANY WARRANTY; without even the implied warranty of
*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
*Lesser General Public License for more details.
*
*You should have received a copy of the GNU Lesser General Public
*License along with FileContentManager; if not, write to the Free Software
*Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package br.com.jteam.jfcm.gui.tree;

import java.util.List;

/**
 * 
 * Descreve um item que ser&atilde;o renderizado em uma
 * {@link br.com.minaurod.fcm.gui.tree.ZipTree}
 * 
 * <p>
 * Cada item &eacute; uma abstra&ccedil;&atilde;o de um arquivo ou
 * diret&oacute;rio, portanto deve ter um nome (o nome do arquivo, incluindo a
 * extens&atilde;o, se houver), ou o nome da pasta e sua lista de subitens.
 * </p>
 * 
 * <p>
 * Al&eacute;m disso, cada item deve definir a a&ccedil;&atilde;o que
 * ser&aacute; executada como resposta ao <i>duplo-click</i> sobre seu nome.
 * </p>
 * 
 * @see ZipTree
 */
public interface ZipData
{

	/**
	 * @return O nome que ser&aacute; exibido na ziptree, incluindo a
	 *         extens&aatilde;o, se houver.
	 */
	String getName();

	/**
	 * @return Se o dado for uma pasta, os itens da pasta, caso
	 *         contr&aacute;rio, uma lista vazia.
	 */
	List<ZipData> getFolderItems();

	/**
	 * @return Verdadeiro, se o dado for uma pasta.
	 */
	boolean isFolder();

	/**
	 * O evento que ser&aacute; executado como resposta ao <i>duplo-click</i>
	 * sobre o nome do arquivo. N&aatilde;o se aplica a pastas.
	 */
	void select();

}
